package com.ruoyi.pay.service;

import com.ruoyi.common.core.domain.model.WxRefundReqBody;

import java.util.Map;

public interface IWxPayV3Service {

    Map<String, Object> prePay(String orderId, int orderType, int payType);

    Map<String, Object> refund(WxRefundReqBody refundRequestBody);

    /**
     * 查询退款状态。
     *
     * @param outRefundNo
     * @return
     */
    Map<String, Object> queryRefundStatus(String outRefundNo);

    void stopCheckPayStatusTimer(String orderId);

    /**
     * 关闭订单。
     *
     * @param outOrderNo 商户系统内部订单号
     */
    boolean closeOrder(String outOrderNo);

    /**
     * 支付成功后的处理方法。
     *
     * @param outOrderNo 商户订单号
     * @param payerTotal 实际支付成功的金额
     * @param orderId    订单id
     * @param orderType  订单类型。0：计时收费订单，1：套餐收费订单，2：拼团订单。
     * @param payType    支付类型。0：仅支付押金，1：仅支付订单费用，2：支付押金+费用
     */
    void executeAfterPaySucceed(String outOrderNo, int payerTotal, String orderId, int orderType, int payType);

    /**
     * 根据订单id取消该订单id对应的支付状态查询定时器。
     *
     * @param orderId
     */
    void cancelPayStatusQueryTimer(String orderId);

}
